/*
 * p11168.cpp
 *
 *  Created on: 2013-6-3
 *      Author: zy
 */

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
const double PI = acos(-1.0);
int sig(double d)
{
	return fabs(d) < 1E-6 ? 0 : d < 0 ? -1 : 1;
}
struct Point
{
	double x, y;
	Point()
	{
	}
	Point(double x, double y) :
		x(x), y(y)
	{
	}
	void set(double x, double y)
	{
		this->x = x;
		this->y = y;
	}
	void read()
	{
		scanf("%lf%lf", &x, &y);
	}
	double mod()
	{//模
		return sqrt(x * x + y * y);
	}
	double mod_pow()
	{//模的平方
		return x * x + y * y;
	}
	Point friend operator -(Point a, Point b)
	{
		return Point(a.x - b.x, a.y - b.y);
	}
	Point friend operator +(Point a, Point b)
	{
		return Point(a.x + b.x, a.y + b.y);
	}
	bool operator <(const Point &p) const
	{
		return sig(x - p.x) != 0 ? x < p.x : sig(y - p.y) < 0;
	}
};

double cross(Point o, Point a, Point b)
{
	return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y);
}
double dot(Point &o, Point &a, Point &b)
{
	return (a.x - o.x) * (b.x - o.x) + (a.y - o.y) * (b.y - o.y);
}
int btw(Point &x, Point &a, Point &b)
{
	return sig(dot(x, a, b));
}
int g_cmp(const void *a, const void *b)
{
	int d = sig(((Point*) a)->y - ((Point*) b)->y);
	return d ? d : sig(((Point*) a)->x - ((Point*) b)->x);
}
//按x从小到大排序，向右走为合法
int graham(Point*p, int n, int*ch)
{
#define push(x)     ch[len ++]=x
#define pop()		len --
	sort(p, p + n);
	int len = 0, len0 = 1, i;
	for (i = 0; i < n; i++)
	{
		while (len > len0 && sig(cross(p[ch[len - 1]], p[ch[len - 2]], p[i]))
				<= 0)
			pop();
		push(i);
	}
	len0 = len;
	for (i = n - 2; i >= 0; i--)
	{
		while (len > len0 && sig(cross(p[ch[len - 1]], p[ch[len - 2]], p[i]))
				<= 0)
			pop();
		push(i);
	}
	return len - 1;
}
double pointToLine(Point o, Point a, Point b)
{
	double d = (a - b).mod();
	double s = cross(a, b, o) / d;
	return fabs(s);
}
Point p[10000 + 5];
int c[10000 + 5];
int main()
{
	int T, n;
	scanf("%d", &T);
	int cas = 0;
	while (T--)
	{
		double sumx = 0, sumy = 0;
		scanf("%d", &n);
		for (int i = 0; i < n; i++)
		{
			p[i].read();
			sumx += p[i].x;
			sumy += p[i].y;
		}
		int cnt = graham(p, n, c);
		c[cnt] = c[0];
		double ans = 1e18;
		for (int i = 0; i < cnt; i++)
		{
			double tmp = 0;
			Point p1 = p[c[i]], p2 = p[c[i + 1]];
			double A = p2.y - p1.y;
			double B = p1.x - p2.x;
			double C = p2.x * p1.y - p1.x * p2.y;
			tmp = fabs(A * sumx + B * sumy + C * n) / sqrt(A * A + B * B);
			ans = min(ans, tmp);
		}
		if (n <= 2)
			ans = 0;
		printf("Case #%d: %.3f\n", ++cas, ans / n);
	}
	return 0;
}
